說真的,如果要我說,最能代表古典密碼學的就是『凱撒密碼』了。
凱撒密碼是將英文順序位移一段後得到的密碼。
例如:
ABCD
↓↓↓↓
CDEF
以此類推的簡單密碼替換。
其公式:
加密:E(x) = (x+n) mod 26
解密:D(x) = (x-n) mod 26
這種方式無敵好破解的,不管是窮舉還是統計分析方式,都是幾秒鐘就能破解的。
但卻是很經典的一種加密,在課堂上的時候很適合使用(誤。
對了,這種方式並不是『位移』而是『替換』喔。
位移的話,是將資料順序打亂但不會有資料被替代。
替換的話,是將資料換成另一個資料,而順序不變。
我簡單舉個例子:
替換: 位移:
ABCD ABCD
↓↓↓↓ ↓↓↓↓
CDEF 1234
(順序逆)
4321
↓↓↓↓
DCBA
例如很相似的『仿射密碼』、『阿特巴希密碼』其實也都是利用類似的原理來做替換。
而替換的複雜度其實就是更加複雜,但依然離不開『單表』替換的本質。
簡單來說,A替換成B,是絕對的,不會因為前後或者其他的變異造成不同的替換結果。
而只要能統計出來替換表,那基本上全部的密碼都按照單一應對表的規則來做替換。
這也導致了很容易就可以使用統計的方式來破解。
那如果加入前後的對應關係,導致替換的值不一樣呢?
那就是多表的替換方式,例如:『維吉尼亞密碼』、『自動密鑰密碼』。
維吉尼亞密碼就是靠著『關鍵字』+『資料』兩個組合而成的密碼。
簡單的說(以下為簡化的例子):
關鍵字的數字為對應的替換行,在由此行去對照列來替換資料。
1 2 3
------
1|2 3 4
2|5 6 7
3|8 9 10
關鍵字:『231』(像是金鑰)
資料:『123』(明文)
1. 關鍵字的一個為『2』找到 行的2 得到 1對5、2對6、3對7。
替換明文,1對5。
加密後:5
2. 關鍵字的二個為『3』找到 行的3 得到 1對8、2對9、3對10。
替換明文,2對9。
加密後:59
3. 關鍵字的二個為『1』找到 行的1 得到 1對2、2對3、3對4。
替換明文,3對4。
加密後:594
差不多就是這樣,能看得出來,從原本的單一表格變成了『多表格』。
以古典密碼來說,都是很簡單的一些基礎原理。
但同時也奠定了現在所有密碼學的基礎之一。
一樣都逃不開『替換』跟『位移』。
到了AES的時候,也會出現多表轉換,也會有經典的固定位移。
如果說把單表的替換,做個N次,一樣會很簡單能被破解嗎?
如果我將多表在做N次並且關鍵字也同實做多表,會那麼容易被破解嗎?
破解包括:
你們覺得如果將這些古典加密,做個多次,有哪些能被簡單的破解,哪些會變成困難?
這就給大家自由思考了~
古典密碼差不多就到這裡了,再接下去就是現代密碼的範疇。
但我想說一些基於古典密碼學的衍生或者進化後的東西。
Base64其實如果嚴格來說,也算是利用了密碼學中的替換。
但不同的是它是公開且固定的替換表,與其說是加密,應該說是編碼。
其實密碼學很多理論不只單單是加密,而很多也牽涉到了現代的編碼理論。
詳細的Base64我就不解說了,有興趣的話可以看一下Wiki,只是想要提到密碼學不只加密,而有些變成了編碼理論的一部份。
德軍在二戰時期的時候用的加密系統就是『恩尼格瑪密碼機』。
它跳脫了古典加密的手法,卻又有古典加密深深的影子。
如果把『多表』的古典加密變成更多表的加密,並且規定前一個字母會影響後一個字母。
使其每個字母都會相對地變動,得到類似於現代的複合式加密的方法。
裡面的機制十分的精彩,但在後面的現代加密中卻很難在提到。
因此放在古典與現代密碼學的中間,再適合不過了。